package com.payment.system.service;

import java.util.List;

import com.payment.common.base.AjaxResult;
import com.payment.system.domain.MerchantIncreaseLimit;

/**
 * 商户信用卡 服务层
 *
 * @author payment
 * @date 2018-12-31
 */
public interface IMerchantIncreaseLimitService {
    /**
     * 查询商户信用卡信息
     *
     * @param iD 商户信用卡ID
     * @return 商户信用卡信息
     */
    public MerchantIncreaseLimit selectMerchantIncreaseLimitById(String iD);

    /**
     * 查询商户信用卡列表
     *
     * @param merchantIncreaseLimit 商户信用卡信息
     * @return 商户信用卡集合
     */
    public List<MerchantIncreaseLimit> selectMerchantIncreaseLimitList(MerchantIncreaseLimit merchantIncreaseLimit);

    /**
     * app 商户新增信用卡
     *
     * @param merchantId    用户ID
     * @param acqMerchantNo 上游商户id
     * @param companyId       公司ID
     * @param bankAccountName 姓名
     * @param bankAccount     信用卡号
     * @param idCardNumber    身份证号
     * @param bankPhone       预留手机号
     * @param bankName        银行名称
     * @param cvn             安全码CVN
     * @param expDate         有效期
     * @param trxSourceIp        调用段ip地址
     * @param orderNo         签约订单号，需保证唯一
     * @param repaymentDay     还款日
     * @param billDay         账单日
     * @param limitMoney       额度
     * @param smsCode         短信验证码
     * @param smsType 
     */
    public AjaxResult insertMerchantIncreaseLimit(String merchantId,String acqMerchantNo, String companyId, String bankAccountName, String bankAccount,
			String idCardNumber, String bankPhone, String bankName, String cvn, String expDate, String trxSourceIp,
			String orderNo, String repaymentDay, String billDay, String limitMoney, String smsCode, Integer smsType);

    /**
     * 信用卡绑卡验证码获取
     *
     * @param merchantId    用户ID
     * @param companyId    公司ID
     * @param bankAccountName 姓名
     * @param bankAccount     信用卡号
     * @param idCardNumber    身份证号
     * @param bankPhone       预留手机号
     * @param bankName        银行名称
     * @param cvn            安全码cvn
     * @param expdate         有效期
     * @param trxSourceIp        调用段ip地址
     * @return
     */
    public AjaxResult bindCardMsg(String merchantId,String companyId,String bankAccountName,
         String bankAccount,String idCardNumber,String bankPhone,String bankName,String cvn,String expdate,String trxSourceIp);

    /**
     * 修改商户信用卡
     *
     * @param merchantIncreaseLimit 商户信用卡信息
     * @return 结果
     */
    public int updateMerchantIncreaseLimit(MerchantIncreaseLimit merchantIncreaseLimit);

    /**
     * 删除商户信用卡信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteMerchantIncreaseLimitByIds(String ids);


    /**
     * 自定义查询商户详情
     *
     * @param iD
     * @return
     */
    MerchantIncreaseLimit selectMerchantDetailById(String iD);


    /**
     * app获取信用卡列表
     *
     * @param merchantId
     * @return
     */
    AjaxResult selectMerchantIncreaseLimitByMerchantId(String merchantId);

    /**
     * app获取卡列表(信用卡加储蓄卡)
     *
     * @param merchantId
     * @return
     */
    AjaxResult selectAllBank (String merchantId);

    /**
     * app 验证是否是信用卡并把信用卡一些信息返回
     *
     * @param cardId
     * @return
     */
    public AjaxResult getCreditCardType(String cardId);

    /**
     * app 获取信用卡信息
     *
     * @param cardId
     * @return
     */
    AjaxResult selectCardVoById(String cardId);

    /**
     * APP 用户解除信用卡绑定
     *
     * @param merchantId 用户id
     * @param cardId     信用卡号
     * @param paymentPwd 支付密码
     * @return
     */
    AjaxResult removeCreditCardByCardIdAndMerchantId(String merchantId, String cardId, String paymentPwd);

    /**
     * 修改卡信息 ：账单日，还款日 额度
     *
     * @param merchantId   用户id
     * @param cardId       信用卡号
     * @param billDay      账单日
     * @param repaymentDay 还款日
     * @param limitMoney  额度
     * @return
     */
    AjaxResult updateCreditCard(String merchantId, String cardId, String billDay, String repaymentDay, String limitMoney);

    public MerchantIncreaseLimit selectByBankAccount(String string);

    /**
     * 后台删除卡信息
     */
    AjaxResult deleteIncreaseLimitById(String ids);



    /**
     * 信用卡签约状态查询
     * @param companyId 公司id
     * @param acqMerchantNo  上游商户号
     * @param bankAccount 卡号
     * @param trxSourceIp 终端ip
     * @return
     */
    public AjaxResult getBankCardSignQuery(String companyId,String acqMerchantNo,String bankAccount, String trxSourceIp);


    /**
     *验证是否开通过通道
     * @param cardId 卡ID
     * @return
     */
    public AjaxResult getcardBind(String cardId);
    /**
     * 根据用户id获取绑定了几张卡
     * @param merchantId
     * @return
     */
	public long selectCountByMerchantId(String merchantId);
}
